/*
 * HttpPost.h
 *
 */

#ifndef HTTPPOST_H_
#define HTTPPOST_H_

#include "HttpRequest.h"

class HttpPost : public HttpRequest {
	private:
		HttpBody* body;
	public:
		/**
		 * Crea una instancia asociada al uri y protocol version de un request.
		 */
		HttpPost(const std::string& uri, const std::string& protocVer);

		virtual ~HttpPost();

		/**
		 * Evalua si la clase contiene o no un body.
		 */
		bool hasBody() const;

		/**
		 * Devuelve una referencia al body contenido.
		 * @throw MessageException En caso que no tenga body.
		 */
		HttpBody& getBody() const;

		/**
		 * Asocia a un body a la instancia.
		 * @param body Referencia al body a asociar.
		 */
		void setBody(HttpBody* body);

		/**
		 * Devuelve el método de la instancia (POST) de la clase.
		 */
		const std::string& getMethod() const;
};

#endif  /* HTTPPOST_H_ */
